home *** CD-ROM | disk | FTP | other *** search
/ isnet Internet / Isnet Internet CD.iso / prog / chat / 12 / 12.exe / SYSTEM / usersum.mrc < prev    next >
Encoding:
Text File  |  2000-02-21  |  10.0 KB  |  296 lines

  1. ;%%%%%%%%%%%%%%%%%%%%%%%%
  2. ;script UserSum script
  3. ;version 7.20
  4. ;author Quietust
  5. ;email quietust@ircN.org
  6. ;url http://www.ircN.org
  7. ;%%%%%%%%%%%%%%%%%%%%%%%%
  8. ; Based on the usersum.tcl available for eggdrop bots.
  9. ; Includes two aliases:
  10. ; 1: usersum
  11. ; -  Use this alias by typing "/usersum" in ircN.
  12. ; 2: partyline.usersum
  13. ; -  Do NOT invoke this alias manually.  It is to be invoked by the ircN
  14. ;    partyline interface of the telnet daemon by typing ".usersum"
  15. ;    IF you are an owner.
  16. ;
  17. ; These aliases will freeze mIRC for several seconds while they calculate
  18. ; userlist statistics.  The larger your userlist, the longer the delay.
  19. ;%%%%%%%%%%%%%%%%%%%%%%%%
  20. alias usersum {
  21.   window -ak @UserSum $getcenter(640,480) @UserSum
  22.   clear @UserSum
  23.   titlebar @UserSum -- Compiling a summary of the userlist, please wait...
  24.   write -c usersum.tmp
  25.   write -c usersum.tm2
  26.   var %a, %b, %c, %d, %e, %t, %u, %v, %w, %x, %y, %z
  27.   var %_b, %_bn, %_d, %_f, %_j, %_k, %_m, %_n, %_o, %_p, %_r, %_v, %_x
  28.   var %__bn, %__o, %__v, %__f, %__d, %__k
  29.   dec %a $ticks
  30.   set %b 1
  31.   while ($ulist(*,40,%b) != $null) {
  32.     set %y $ifmatch
  33.     set %z $readini -n users.ini Users %y
  34.     if (%z == $null) {
  35.       inc %b
  36.       continue
  37.     }
  38.     if ($read -ns [ $+ [ %z ] ] usersum.tmp != $null)  {
  39.       inc %b
  40.       continue
  41.     }
  42.     set %x $readini -n users.ini %z flags
  43.     if (b isincs %x) inc %_b
  44.     if (d isincs %x) inc %_d
  45.     if (f isincs %x) inc %_f
  46.     if (j isincs %x) inc %_j
  47.     if (k isincs %x) inc %_k
  48.     if (m isincs %x) inc %_m
  49.     if (n isincs %x) inc %_n
  50.     if (o isincs %x) inc %_o
  51.     if (p isincs %x) inc %_p
  52.     if (r isincs %x) inc %_r
  53.     if (v isincs %x) inc %_v
  54.     if (x isincs %x) inc %_x
  55.     set %w $readini -n users.ini %z channels
  56.     if (%w) {
  57.       set %c 1
  58.       while ($gettok(%w,%c,44)) {
  59.         set %u $ifmatch
  60.         set %v $readini -n users.ini %z %u
  61.         if ($findtok(%t,%u,1,44) != $null) set %u $ifmatch
  62.         else {
  63.           set %t $addtok(%t,%u,44)
  64.           set %u $findtok(%t,%u,1,44)
  65.           var %_ [ $+ [ %u ] $+ ] _d, %_ [ $+ [ %u ] $+ ] _f, %_ [ $+ [ %u ] $+ ] _k, %_ [ $+ [ %u ] $+ ] _o, %_ [ $+ [ %u ] $+ ] _v, %_ [ $+ [ %u ] $+ ] _bn
  66.         }
  67.         if (d isincs %v) inc %_ [ $+ [ %u ] $+ ] _d
  68.         if (f isincs %v) inc %_ [ $+ [ %u ] $+ ] _f
  69.         if (k isincs %v) inc %_ [ $+ [ %u ] $+ ] _k
  70.         if (o isincs %v) inc %_ [ $+ [ %u ] $+ ] _o
  71.         if (v isincs %v) inc %_ [ $+ [ %u ] $+ ] _v
  72.         inc %c
  73.       }
  74.     }
  75.     if (($readini -n users.ini %z password == $null) && (b !isincs %x)) {
  76.       inc %d
  77.       write usersum.tm2 %z 
  78.     }
  79.     write usersum.tmp %z
  80.     inc %e
  81.     inc %b
  82.   }
  83.   set %b 1
  84.   while ($ulist(*,20,%b) != $null) {
  85.     set %y $ifmatch
  86.     set %z $readini -n bans.ini %y channels
  87.     if (%z == $null) {
  88.       echo @UserSum Removed invalid ban %b $+ : %y
  89.       .ruser 20 %y
  90.       continue
  91.     }
  92.     if (%z == all) inc %_bn
  93.     else {
  94.       set %c 1
  95.       while ($gettok(%z,%c,44)) {
  96.         set %u $ifmatch
  97.         if ($findtok(%t,%u,1,44) == $null) {
  98.           set %t $addtok(%t,%u,44)
  99.           set %u $findtok(%t,%u,1,44)
  100.           var %_ [ $+ [ %u ] $+ ] _d, %_ [ $+ [ %u ] $+ ] _f, %_ [ $+ [ %u ] $+ ] _k, %_ [ $+ [ %u ] $+ ] _o, %_ [ $+ [ %u ] $+ ] _v, %_ [ $+ [ %u ] $+ ] _bn
  101.         }
  102.         else set %u $findtok(%t,%u,1,44)
  103.         inc %_ [ $+ [ %u ] $+ ] _bn
  104.         inc %c
  105.       }
  106.     }
  107.     inc %b
  108.   }
  109.   inc %a $ticks
  110.   titlebar @UserSum -- Completed in $rrpt(%a) seconds.
  111.   echo @UserSum Stats compiled, displaying...
  112.   echo @UserSum $hc(Totals:) $sc($num($ulist(*,20,0))) bans
  113.   echo @UserSum $fix(2,-) Users: $fix(4,$sc($num(%e))) Hostmasks: $fix(4,$sc($num($ulist(*,40,0)))) Bots: $sc($num(%_b))
  114.   echo @UserSum $hc(Global User Statistics) $+ : $sc($num(%_bn)) bans
  115.   echo @UserSum - Owners: $fix(4,$sc($num(%_n))) Masters: $fix(7,$sc($num(%_m))) Remote: $sc($num(%_r))
  116.   echo @UserSum $fix(2,-) Files: $fix(4,$sc($num(%_x))) Janitors: $fix(3,$sc($num(%_j))) Partyline: $sc($num(%_p))
  117.   echo @UserSum $fix(4,-) Ops: $fix(4,$sc($num(%_o))) Voice: $fix(6,$sc($num(%_v))) Protected: $sc($num(%_f))
  118.   echo @UserSum $fix(2,-) Deops: $fix(4,$sc($num(%_d))) Kicks: $sc($num(%_k))
  119.   set %b 1
  120.   while ($gettok(%t,%b,44) != $null) {
  121.     set %__bn %_ [ $+ [ %b ] $+ ] _bn
  122.     set %__o %_ [ $+ [ %b ] $+ ] _o
  123.     set %__v %_ [ $+ [ %b ] $+ ] _v
  124.     set %__f %_ [ $+ [ %b ] $+ ] _f
  125.     set %__d %_ [ $+ [ %b ] $+ ] _d
  126.     set %__k %_ [ $+ [ %b ] $+ ] _k
  127.     echo @UserSum $hc($ifmatch) $hc(Channel Statistics:) $sc($num(%__bn)) bans
  128.     echo @UserSum $fix(3,-) Ops: $fix(4,$sc($num(%__o))) Voice: $fix(4,$sc($num(%__v))) Protected: $sc($num(%__f))
  129.     echo @UserSum - Deops: $fix(4,$sc($num(%__d))) Kicks: $sc($num(%__k))
  130.     inc %b
  131.   }
  132.   echo -i2 @UserSum $hc(Users without passwords) $rbrk(%d) $+ :
  133.   set %z
  134.   set %b 1
  135.   while (%b <= $lines(usersum.tm2)) {
  136.     while (($len(%z) < 768) && (%b <= $lines(usersum.tm2))) {
  137.       set %z %z $read -nl [ $+ [ %b ] ] usersum.tm2
  138.       inc %b
  139.     }
  140.     echo -i2 @UserSum %z
  141.     set %z
  142.     inc %b
  143.   }
  144.   echo -i2 @UserSum $hc(All usernames) $rbrk(%e) $+ :
  145.   set %z
  146.   set %b 1
  147.   while (%b <= $lines(usersum.tmp)) {
  148.     while (($len(%z) < 768) && (%b <= $lines(usersum.tmp))) {
  149.       set %z %z $read -nl [ $+ [ %b ] ] usersum.tmp
  150.       inc %b
  151.     }
  152.     echo -i2 @UserSum %z
  153.     set %z
  154.     inc %b
  155.   }
  156.   .remove usersum.tmp
  157.   .remove usersum.tm2
  158. }
  159. alias partyline.usersum {
  160.   if ($chkflag($gettok($1,2,46),*,n) == $false) return -1
  161.   sockwrite -n $1 Compiling a summary of the userlist, please wait...
  162.   write -c usersum.tmp
  163.   write -c usersum.tm2
  164.   var %b, %c, %d, %e, %f, %t, %u, %v, %w, %x, %y, %z
  165.   var %_b, %_d, %_f, %_j, %_k, %_m, %_n, %_o, %_p, %_r, %_v, %_x
  166.   var %__bn, %__o, %__v, %__f, %__d, %__k
  167.   set %b 1
  168.   while ($ulist(*,40,%b) != $null) {
  169.     set %y $ifmatch
  170.     set %z $readini -n users.ini Users %y
  171.     if (%z == $null) {
  172.       inc %b
  173.       continue
  174.     }
  175.     if ($read -ns [ $+ [ %z ] ] usersum.tmp != $null)  {
  176.       inc %b
  177.       continue
  178.     }
  179.     set %x $readini -n users.ini %z flags
  180.     if (b isincs %x) inc %_b
  181.     if (d isincs %x) inc %_d
  182.     if (f isincs %x) inc %_f
  183.     if (j isincs %x) inc %_j
  184.     if (k isincs %x) inc %_k
  185.     if (m isincs %x) inc %_m
  186.     if (n isincs %x) inc %_n
  187.     if (o isincs %x) inc %_o
  188.     if (p isincs %x) inc %_p
  189.     if (r isincs %x) inc %_r
  190.     if (v isincs %x) inc %_v
  191.     if (x isincs %x) inc %_x
  192.     set %w $readini -n users.ini %z channels
  193.     if (%w) {
  194.       set %c 1
  195.       while ($gettok(%w,%c,44)) {
  196.         set %u $ifmatch
  197.         set %v $readini -n users.ini %z %u
  198.         if ($findtok(%t,%u,1,44) == $null) {
  199.           set %t $addtok(%t,%u,44)
  200.           set %u $findtok(%t,%u,1,44)
  201.           var %_ [ $+ [ %u ] $+ ] _d, %_ [ $+ [ %u ] $+ ] _f, %_ [ $+ [ %u ] $+ ] _k, %_ [ $+ [ %u ] $+ ] _o, %_ [ $+ [ %u ] $+ ] _v, %_ [ $+ [ %u ] $+ ] _bn
  202.         }
  203.         else set %u $findtok(%t,%u,1,44)
  204.         if (d isincs %v) inc %_ [ $+ [ %u ] $+ ] _d
  205.         if (f isincs %v) inc %_ [ $+ [ %u ] $+ ] _f
  206.         if (k isincs %v) inc %_ [ $+ [ %u ] $+ ] _k
  207.         if (o isincs %v) inc %_ [ $+ [ %u ] $+ ] _o
  208.         if (v isincs %v) inc %_ [ $+ [ %u ] $+ ] _v
  209.         inc %c
  210.       }
  211.     }
  212.     if (($readini -n users.ini %z password == $null) && (b !isincs %x)) {
  213.       inc %d
  214.       write usersum.tm2 %z
  215.     }
  216.     write usersum.tmp %z
  217.     inc %e
  218.     inc %b
  219.   }
  220.   set %b 1
  221.   while ($ulist(*,20,%b) != $null) {
  222.     set %y $ifmatch
  223.     set %z $readini -n bans.ini %y channels
  224.     if (%z == $null) {
  225.       sockwrite -n $1 Removed invalid ban %b $+ : %y
  226.       .ruser 20 %y
  227.       continue
  228.     }
  229.     if (%z == all) inc %f
  230.     else {
  231.       set %c 1
  232.       while ($gettok(%z,%c,44)) {
  233.         set %u $ifmatch
  234.         if ($findtok(%t,%u,1,44) == $null) {
  235.           set %t $addtok(%t,%u,44)
  236.           set %u $findtok(%t,%u,1,44)
  237.           var %_ [ $+ [ %u ] $+ ] _d, %_ [ $+ [ %u ] $+ ] _f, %_ [ $+ [ %u ] $+ ] _k, %_ [ $+ [ %u ] $+ ] _o, %_ [ $+ [ %u ] $+ ] _v, %_ [ $+ [ %u ] $+ ] _bn
  238.         }
  239.         else set %u $findtok(%t,%u,1,44)
  240.         inc %_ [ $+ [ %u ] $+ ] _bn
  241.         inc %c
  242.       }
  243.     }
  244.     inc %b
  245.   }
  246.   sockwrite -n $1 Stats compiled, displaying...
  247.   sockwrite -n $1 Totals: $num($ulist(*,20,0)) bans
  248.   sockwrite -n $1 $fix(2,-) Users: $fix(4,$num(%e)) Hostmasks: $fix(4,$num($ulist(*,40,0))) Bots: $num(%_b)
  249.   sockwrite -n $1 Global User Statistics: $num(%f) bans
  250.   sockwrite -n $1 - Owners: $fix(4,$num(%_n)) Masters: $fix(7,$num(%_m)) Remote: $num(%_r)
  251.   sockwrite -n $1 $fix(2,-) Files: $fix(4,$num(%_x)) Janitors: $fix(3,$num(%_j)) Partyline: $num(%_p)
  252.   sockwrite -n $1 $fix(4,-) Ops: $fix(4,$num(%_o)) Voice: $fix(6,$num(%_v)) Protected: $num(%_f)
  253.   sockwrite -n $1 $fix(2,-) Deops: $fix(4,$num(%_d)) Kicks: $num(%_k)
  254.   set %b 1
  255.   while ($gettok(%t,%b,44) != $null) {
  256.     set %__bn %_ [ $+ [ %b ] $+ ] _bn
  257.     set %__o %_ [ $+ [ %b ] $+ ] _o
  258.     set %__v %_ [ $+ [ %b ] $+ ] _v
  259.     set %__f %_ [ $+ [ %b ] $+ ] _f
  260.     set %__d %_ [ $+ [ %b ] $+ ] _d
  261.     set %__k %_ [ $+ [ %b ] $+ ] _k
  262.     sockwrite -n $1 $ifmatch Channel Statistics: $num(%__bn) bans
  263.     sockwrite -n $1 $fix(3,-) Ops: $fix(4,$num(%__o)) Voice: $fix(4,$num(%__v)) Protected: $num(%__f)
  264.     sockwrite -n $1 - Deops: $fix(4,$num(%__d)) Kicks: $num(%__k)
  265.     inc %b
  266.   }
  267.   sockwrite -n $1 Users without passwords ( $+ %d $+ ) $+ :
  268.   set %z
  269.   set %b 1
  270.   while (%b <= $lines(usersum.tm2)) {
  271.     while (($len(%z) < 768) && (%b <= $lines(usersum.tm2))) {
  272.       set %z %z $read -nl [ $+ [ %b ] ] usersum.tm2
  273.       inc %b
  274.     }
  275.     sockwrite -n $1 %z
  276.     set %z
  277.     inc %b
  278.   }
  279.   sockwrite -n $1 All usernames ( $+ %e $+ ) $+ :
  280.   set %z
  281.   set %b 1
  282.   while (%b <= $lines(usersum.tmp)) {
  283.     while (($len(%z) < 768) && (%b <= $lines(usersum.tmp))) {
  284.       set %z %z $read -nl [ $+ [ %b ] ] usersum.tmp
  285.       inc %b
  286.     }
  287.     sockwrite -n $1 %z
  288.     set %z
  289.     inc %b
  290.   }
  291.   .remove usersum.tmp
  292.   .remove usersum.tm2
  293.   return 1
  294. }
  295. alias -l num return $iif($1 isnum,$1,0)
  296.